今天比較不同啦 終於從7kyu開始哩
雖然好像難度……..差不多XDDDDDD
6kyu就真的會比較難了啦(應該吧
反正就要慢慢來的嘛!!
這一次的題目看起來很有趣,所以就選了這一題了
(才不是因為題目名稱可以取得很吸引人呢!!
蛤?你說題目不吸引人喔….好吧 嗚嗚嗚嗚
今天的題目不難,只要把字串中的每一個字元在字串中是獨一無二的就回傳true,否則回傳false。
我們來看看他的範例輸入輸出,也就是他的test code。
看完範例輸入輸出就可以更清楚知道他要幹嘛了。
今天要特別介紹一下MS TEST 的 Assert.IsFalse和Assert.IsTrue
前幾天都只有用到Assert.AreEqual的方法,所以今天就特別介紹一下他們唄。
好像也沒甚麼好介紹的(被揍
簡單來說
Assert.IsFalse(bool);
Assert. IsTrue(bool);
這兩個的bool回傳是否為true來判斷這一個測試案例是否通過
來舉個會失敗的例子
Assert.IsFalse(true);
Assert.IsTrue(false)
這樣就清楚惹吧?
接下來要拆解需求啦,題目是要求如果全部都是單獨的字元就回傳true,反過來意思就是如果有重複的字元就回傳false。
所以我們要拿字元,然後去跟字串做比較
接下來開始實作吧! 把專案創建好之後,就把第一個測試案例名稱寫出來吧!
我們要從最簡單的第一步開始,老樣子,如果覺得一開始有點卡卡的就可以加入3A原則的註解唷!
接下來就可以寫Code,一開始Test Case中的Code會長這樣
而Production Code 就長這樣
老樣子,跑個測試,沒過很正常,commit一下
接下來把Production Code改一下,用最小步伐讓Test Case Pass吧!
接下來跑個測試,PASS!
來寫個第二個測試案例唄,這一個測試案例是讓自己不會毛毛的,所以寫了一個會過的測試案例。
改完測試案例,Run! Pass!!
Pass之後commit,然後回來看一下test code 是否需要重構,理所當然的事需要,所以就改成這個樣子
接下來想一個一定會fail但是最簡單讓他fail的測試案例吧!
接下來跑一下測試吧,一定是紅燈!
接下來要思考的是需求面,我只要計算他的字原有沒有重複超過1次,那我就回傳false,因為超過1次就等於出現了2次以上了。
但這一次只考慮到字串長度等於2的時候。
然後跑個測試 Passs,Commit!
接下來再新增一個測試案例,是2個字元但會回傳true的測試案例
新增完之後跑個測試,pass
接下來就新增一個一定會fail的測試案例,因為Production Code目前只有取第一個來比較,所以這一次就把測試案例設計成這個樣子。
跑個測試,Fail,Commit。
這一段Production Code需要用迴圈來跑過每一個字串中的字元來做比較,所以就變成這個樣子
跑個測試,Pass,Commit
接下來看到for迴圈,代表可以針對他來改看看Linq的語法,於是就變這個樣子。
跑個測試,Pass,Commit。
覺得對Code有信心時就來多寫幾個測試案例吧!!!
All Pass之後,再Codewars上提交! Pass!!
通過!
老樣子我最喜歡的部分就是去看看別人寫這題寫得如何XD
哦這一次看到的東西是我第一次看到的欸…..原來可以用SequenceEqual來判斷啊…..長知識了
今天的題目也是蠻簡單的,不過也一樣脫離不,寫測試,紅燈,綠燈,然後重構。
明天依然會是7kyu 繼續混文章 不是 我是說 繼續努力
Git url:
https://github.com/SQZ777/Codewars_AllUnique
下一題,明天見!